package algo3c3g5.componentes;

//REGLA80Carcteres_0123456789012345678901234567890123456789012345678901234567890
public class CajaDeCambios extends Componente {

		private Motor motor;
		
		private int cantCambios;
		private int cambio;
		
		private double fuerzaPrevia;
		
		public CajaDeCambios(double vidaUtil, double masa, double precio, 
				int cantCambios) {
			
			super(TipoComponente.CAJA_DE_CAMBIOS, vidaUtil, 
					masa, precio);
			//
			this.motor = null;
			this.cantCambios = cantCambios;
			
		}
		
		public void setMotor(Motor motor) {
			
			this.motor = motor;
			
		}
		
		double obtenerFuerza() {
			
			double x = (this.fuerzaPrevia / this.motor.getFuerzaMax());
			
			//(!)
			x++;
			
			double y = 0;
			
			if (this.cambio == 0) {
				
				y = 0;
			
			} else {
						
				if (x < (this.cambio - 1) / this.cantCambios) {
					
					y = x;
						
				} else if (x > (this.cambio - 0.5) / this.cantCambios) {
					
					y = this.cambio / this.cantCambios;
					
				} else {
					
					y = 2 * x;
					
				}
			
			}
			
			y = y * this.motor.obtenerFuerza();
			
			this.fuerzaPrevia = y;
			
			return y;
			
		}
		
		public double getCantCambios() {
			
			return this.cantCambios;
		}
		
		public int getCambio() {
			
			return this.cambio;
			
		}
		
		public boolean ponerCambio(int cambio) {
			
			boolean exitoAlSetCambio = false;
			if ((cambio >=0) && (cambio <= this.cantCambios)) {
				this.cambio = cambio;
				exitoAlSetCambio = true;
			}
			return exitoAlSetCambio;
			
		}
		
}
